// TestXml.cpp : Test XML encoding and decoding.

// The characters <>&'" are illegal in xml and must be encoded.





#define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers



#include <iostream>

// If you are using MSVC++6, you should update <string> to fix

// BUG: getline Template Function Reads Extra Character

#include <string>

#include <assert.h>

#include <stdlib.h>



#include "XmlRpcUtil.h"



using namespace XmlRpc;





int main()

{

  // Basic tests

  std::string empty;

  assert(empty == XmlRpcUtil::xmlEncode(empty));

  assert(empty == XmlRpcUtil::xmlDecode(empty));

  assert(empty == XmlRpcUtil::xmlEncode(""));

  assert(empty == XmlRpcUtil::xmlDecode(""));



  std::string raw("<>&'\"");

  assert(XmlRpcUtil::xmlDecode(XmlRpcUtil::xmlEncode(raw)) == raw);



  std::cout << "Basic tests passed.\n";



  // Interactive tests

  std::string s;

  for (;;) {

    std::cout << "\nEnter line of raw text to encode:\n";

    std::getline(std::cin, s);

    if (s.empty()) break;



    std::cout << XmlRpcUtil::xmlEncode(s) << std::endl;

  }



  for (;;) {

    std::cout << "\nEnter line of xml-encoded text to decode:\n";

    std::getline(std::cin, s);

    if (s.empty()) break;



    std::cout << XmlRpcUtil::xmlDecode(s) << std::endl;

  }



  return 0;

}



